package demo9.teht;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JApplet;
import javax.swing.JPanel;

/**
 *
 * @author Pasi
 */
public class T3_Tehtava extends JApplet {
// hiiren painalluksen ja vapautuksen koordinaatit,
  // joiden väliin piirretään suorakulmio
  private int alkuX,alkuY,loppuX,loppuY;
  // piirrettävän suorakaiteen korkeus ja leveys
  private int leveys, korkeus;
  // suorakulmion väri
  private Color c;

  @Override
  public void init() {
    // hiirenkuuntelijan alustus
    addMouseListener(new HiirenPainallus());
    // piirto toteutetaan sisäisellä luokalla
    getContentPane().add(new PiirtoPaneeli());
  }

  
  public class PiirtoPaneeli extends JPanel {
      @Override
      public void paintComponent(Graphics g) {
        setOpaque(false);
        if (isOpaque())System.out.println("opaque");
        
        // piirretään erivärisiä suorakulmioita
        g.setColor(new Color((int)(Math.random()*255),(int)(Math.random()*255),(int)(Math.random()*255)));

        // piirretään täytetty suorakaide
        g.fillRect(alkuX,alkuY,leveys,korkeus);
   }   
  }
  
  // hiiren tapahtumia kuuntelevan luokan toteutus
  class HiirenPainallus extends MouseAdapter {
      
    // hiiren nappi painettu ala-asentoon
    @Override
    public void mousePressed(MouseEvent tapahtuma) {
      // otetaan talteen koordinaatit
      alkuX = tapahtuma.getX();
      alkuY = tapahtuma.getY();
    }

    // hiiren näppäin vapautettu
    @Override
    public void mouseReleased(MouseEvent tapahtuma) {
      // otetaan talteen koordinaatit
      loppuX = tapahtuma.getX();
      loppuY = tapahtuma.getY();

      // tutkitaan piirrettävän suorakulmion leveys ja korkeus
      leveys = Math.abs(alkuX - loppuX);
      korkeus = Math.abs(alkuY - loppuY);

      // jos piirretään alhaalta oikealta ylos vasemmalla
      // joudutaan vaihtamaan alku ja loppu pisteitä
      if (alkuX > loppuX) {
        int temp = alkuX;
        alkuX = loppuX;
        loppuX = temp;
      }
      if (alkuY > loppuY) {
        int temp = alkuY;
        alkuY = loppuY;
        loppuY = temp;
      }

      // tulostetaan koordinaatit tilariville
      showStatus("("+alkuX+","+alkuY+")("+loppuX+","+loppuY+")");

      // piirretään appletti uudestaan
      repaint();
    }
  }
}
